package leetcode100;

/**
 * @author shkstart
 * @create 2022-11-28-16:48
 */
public class jianzhi2 {
    public String addBinary(String a, String b) {
        int i = a.length() - 1;//用charAt(i)的方式来表示 i 对应的数字
        int j = b.length() - 1;//用charAt(j)的方式来表示 j 对应的数字
        int temp = 0;//用来判断 上一次计算是否有进位

        StringBuffer sb = new StringBuffer("");
        while (i >= 0 || j >= 0 || temp != 0) {
            // i没遍历完   j没遍历完   最前面的两个数字之和有进位还没计算

            int x = i < 0 ? 0 : a.charAt(i) - '0';//给遍历完成的补上0
            int y = j < 0 ? 0 : b.charAt(j) - '0';

            int sum = x + y + temp;

            sum = x + y + temp >= 2 ? sum - 2 : sum;//存在0、1 和 2、3 两种分类
            temp = x + y + temp >= 2 ? 1 : 0;//2\3需要进位  1、0不需要进位
            sb.append(sum);//拼接
            i--;
            j--;
        }
        return sb.reverse().toString();

    }
}